package com.ltx.vizflowservice.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ltx.vizflowservice.common.convention.result.Result;
import com.ltx.vizflowservice.domain.dto.ProjectDTO;
import com.ltx.vizflowservice.domain.entity.Project;
import com.ltx.vizflowservice.domain.entity.ProjectTemplate;

/**
 * <p>
 * 项目表 服务类
 * </p>
 *
 * @author 罗添煦
 * @since 2024-11-15
 */
public interface ProjectService extends IService<Project> {

    /**
     * 创建项目
     * @param projectDTO 项目信息
     * @param userId 用户id
     * @return 项目id
     */
    Result<?> createProject(ProjectDTO projectDTO, String userId , Integer projectStatus);

    /**
     * 获取项目列表
     * @return 项目列表
     */
    Result<?> getProjectList();

    /**
     * 更新项目状态
     * @param projectId 项目id
     * @param projectStatus 项目状态
     * @return 项目状态
     */
    Result<?> updateProjectStatus(Integer projectId, Integer projectStatus);

    /**
     * 获取项目详情
     * @param projectId 项目id
     * @return 项目详情
     */
    Result<?> getProjectDetails(Integer projectId);

    /**
     * 保存项目
     * @param projectDTO 项目信息
     * @return 项目id
     */
    Result<?> saveProject(ProjectDTO projectDTO);

    /**
     * 发布模板
     * @param projectId 项目id
     * @return 项目id
     */
    Result<?> publishTemplate(Long projectId);

    /**
     * 获取模板列表
     * @param page 分页信息
     * @return 模板列表
     */
    Result<?> getTemplates(Page<ProjectTemplate> page);

    /**
     * 使用模板
     * @param projectId 项目id
     * @return 项目id
     */
    Result<?> useTemplate(Long projectId);
}
